package com.exercise.algorithm9;

import com.fun.frame.SourceCode;

public class A520 extends SourceCode {
/*
题目链接
https://leetcode-cn.com/problems/detect-capital/

题目描述
给定一个单词，你需要判断单词的大写使用是否正确。

我们定义，在以下情况时，单词的大写用法是正确的：

全部字母都是大写，比如"USA"。

单词中所有字母都不是大写，比如"leetcode"。

如果单词不只含有一个字母，只有首字母大写， 比如 "Google"。

否则，我们定义这个单词没有正确使用大写字母。

示例 1:

输入: "USA"
输出: True
示例 2:

输入: "FlaG"
输出: False
注意: 输入是由大写和小写拉丁字母组成的非空单词。
 */


    public boolean isRight(String word) {
        String after = word.substring(1);
        char c = word.charAt(0);
        char s = word.charAt(1);
        boolean o = lowOrUp(c);
        boolean t = lowOrUp(s);
        boolean r = isR(after);
        if (o == t && r == true) return true;
        if (o == true && t == false && r == true) return true;
        return false;
    }

    public boolean isR(String word) {
        int length = word.length();
        boolean key = false;
        for (int i = 0; i < length; i++) {
            char c = word.charAt(i);
            boolean s = lowOrUp(c);
            if (i == 0) {
                key = s;
            }
            if (key != s) return false;
        }
        return true;
    }

    public boolean lowOrUp(char c) {
        if (c >= 'A' && c <= 'Z') return true;
        return false;
    }


    public boolean detectCapitalUse(String word) {
        int c1 = 0, c2 = 0;
        for (int i = 0; i < word.length(); i++) {
            if (word.charAt(i) - 'a' >= 0) {
                c1++;
            } else {
                c2++;
            }
        }
        if (c1 == word.length() || c2 == word.length()) {
            return true;
        }
        return (1 == c2 && word.charAt(0) < 'a');
    }


}
